[t:/]$ 지식_

numpy mmap

2022/10/31

python numpy mmaped 파일과 np.save 파일의 차이. np.array을 저장한 np.save 파일에는 단지 128바이트의 헤더만 붙어있고 엔디안과 내용이 일치한다.

헤더는 아마도 배열의 차원, 길이, 데이터형식, 패딩 일 것이다.

즉 np.save 로 저장한 nd.array는 np.memmap으로 접근이 가능하다.

단, np.memmap에게 알려주는 shape에 128바이트 만큼 길이를 확장해주고, a = a[128:] 으로 헤더를 컷해서 쓰면 똑같다는 뜻.

여기서 128은 바이트이므로 shape의 sizeof(dtype)을 나눠서 계산해야 한다.

... 라고 쓰고 아니 잠깐만 나의 파이썬이 이렇게 귀여울리가 없어하고 뒤져보니.. 내부 함수로 그냥 있다..

https://numpy.org/doc/stable/reference/generated/numpy.lib.format.open_memmap.html#numpy.lib.format.open_memmap

즉, np.save로 저장한 np.array는 shape와 dtype을 따로 저장해 둘 필요없이 np.lib.format.open_memmap으로 읽으면 shape 정보를 반영하여 mmap 접근이 가능하다.





공유하기













[t:/] is not "technology - root". dawnsea, rss